define(["../common"], function() {
	
	loadjs(["datepicker"]);
	
	var $form = $("#promoteForm");
	saveDoPath = g_shopDomain + "/storePromote/addOrEditDo/json",
	// 可赠送商品种数
	giftMax = 5;// 仅作为前端参考值,应该与后台程序对应
	
	var formConfig = {
		rules: {
			startTime: function(el) {
				// 开始时间只能是过去一天往后
				if (parseInt($(el).val()) < (new Date().getTime() - 864e5)) {
					return "应该大于当前时间";
				}
			}
		},
		fields: {
			name: "required;length[~80]",
			type: "required",
			cost: "required;money",
			back: "required;money",
			isAnalogy: "required",
			analogyCost: "required;money",
			analogyBack: "required;money",
			"#giftAmount": {
				rule: "integer[+]",
				msg: {integer: "请设置赠送商品"}
			},
			autoOut: "required",
			startTime: {
				rule: "required;startTime",
				target: "#stMsg"
			},
			endTime: {
				rule: "required;match[gt, startTime]",
				msg: {match: "必须大于开始时间"}
			}
		},
		beforeSubmit: function(form) {// 提交前(实际可以说是表单验证前)
			var ignoreIds = "";
			var type = parseInt($("#type").val());
			
			if (type === 0 || type === 2) {// 满减	
				// 忽略满赠中的"自动下撤"、"赠送商品"列表和种数
				ignoreIds = "[name='autoOut'],[id^='giftAmountW_'],#giftAmount";
				// 忽略"类推订单金额"、"类推满减金额"
				if ($("[name='isAnalogy']:checked").val() === "0") {
					ignoreIds += ",#analogyCost,#analogyBack";
				}
				
			} else if(type === 1 || type === 3) {// 满赠	
				// 忽略"满减金额"、"是否类推"、"类推订单金额"、"类推满减金额"
				ignoreIds = "#back,[name='isAnalogy'],#analogyCost,#analogyBack";
			}
			$form.data('validator').options.ignore = ignoreIds;
		}
	};
	
	if (!$("#startTime").val() || !$("#endTime").val()) {
		// 默认今天
		$("#stPicker").val(new Date().format("yyyy-MM-dd hh:mm:ss"));
		$("#etPicker").val(new Date().format("yyyy-MM-dd 23:59:59"));
		$("#startTime").val(getTimeStamp($("#stPicker").val()));
		$("#endTime").val(getTimeStamp($("#etPicker").val()));
	} else {
		// 自定义
		$("[name='timeType'][value=2]").prop("checked", true);
		$("#stPicker, #etPicker").prop("disabled", false);
		var startDate = new Date();
		startDate.setTime($("#startTime").val());
		var endDate = new Date();
		endDate.setTime($("#endTime").val());
		$("#stPicker").val(startDate.format("yyyy-MM-dd hh:mm:ss"));
		$("#etPicker").val(endDate.format("yyyy-MM-dd hh:mm:ss"));
	}

	loadjs(["validator"],initValidator);
	
	// 表单验证通过后的事件
	$form.on('valid.form', function(e, form){
		if(!$form.showMsg("正在保存...", 'load', true)) return;
		$.post(saveDoPath, $form.serialize(), function(data){
			if (data.status !== 0) {
				$form.showMsg(data.message, 'error');
				return;
			}
			$("#promoteId").val(data.result); 
			$form.showMsg("保存成功！", 'pass');
			Common.referrer();
		});
	});

	$("[id^='submitBt_']").click(function() {
		// 满赠
		if ($("#type").val() === "1") {
			// 先自动结束赠送商品的选择，
			// 以便可以检查赠送商品相关信息，
			// 因为会存在用户提交时并没有在赠送商品中操作"完成"的情况。
			$("#giftFinishBt").click();
		}
		$form.trigger('validate');
	});
	
	$("#cancelBt").click(function() {
		Common.referrer(null, 0);
	});
	
	$("#delBt").click(function() {
		
		var promoteId = $("#promoteId").val();
		if (!promoteId) {
			Common.referrer(null, 0);
			return;
		}
		
		var $this = $(this);
		if ($this.doing()) return;		
		
		var msgboxConfig = {
			type: 'confirm',
			content: "确定要删除促销吗？",
			title: "提示",
			onClose: function() {
				if (this.val()) {
					delDo_();
				}
			}
		};
		
		loadjs(["msgbox"], function() {
			$.msgbox(msgboxConfig);
		});
		
		function delDo_() {
			
			$.post(g_shopDomain + "/storePromote/delDo/json", {promoteId: promoteId}, function(data) {
				if (data.status !== 0) {
					$this.showMsg(data.message, 'error');
					return;
				} 
				$this.showMsg("删除成功！", 'pass');
				Common.referrer();
				
			});
		}
	});

	function initValidator() {
		
		$form.validator(formConfig);
		$("[name='isAnalogy']:checked").click();
		$("#type").change();
	}

	// 事件:切换促销类型
	$("#type").change(function() {
		$("[id^='itemType_']").hide();
		$("#itemType_" + $(this).val()).show();
	});

	// 事件:切换满减是否类推
	$("[name='isAnalogy']").click(function(){
		if ($(this).val() === "1") {
			$("#analogize").show();
		} else {
			$("#analogize").hide();
		}
	});

	// 选择时间类型
	$("[name='timeType']").click(function() {
		var timeType = parseInt($(this).val());
		// 允许/禁用自定义时间
		$("#stPicker, #etPicker").prop("disabled", !(timeType === 2));
		
		$("#stPicker").val(new Date().format("yyyy-MM-dd hh:mm:ss"));
		// 今天
		if (timeType === 0) {
			$("#etPicker").val(new Date().format("yyyy-MM-dd 23:59:59"));
			
		} // 本周
		else if (timeType === 1) {
			var endDate = new Date();
			endDate.setTime(endDate.getTime() + (7 - endDate.getDay()) * 864e5);
			$("#etPicker").val(endDate.format("yyyy-MM-dd 23:59:59"));
		}
		
		//
		$("#startTime").val(getTimeStamp($("#stPicker").val()));
		$("#endTime").val(getTimeStamp($("#etPicker").val()));
	});
		
	// 事件:开始日期选择后
	$("#stPicker").blur(function() {
		$("#startTime").val(getTimeStamp($(this).val()));
		$("#startTime").blur();
	});
	// 事件:结束日期选择后
	$("#etPicker").blur(function() {
		$("#endTime").val(getTimeStamp($(this).val()));
		$("#endTime").blur();
	});
	// 将日期字符串转换成毫秒值
	function getTimeStamp(dateTimeStr) {
		if (!dateTimeStr) {
			return;
		}
		var dateTimeArr = dateTimeStr.split(" ");
		var dateArr = dateTimeArr[0].split("-");
		var timeArr = dateTimeArr[1].split(":");
		var date = new Date();
		date.setFullYear(dateArr[0], dateArr[1]-1, dateArr[2]);
		date.setHours(timeArr[0], timeArr[1], timeArr[2], 0);
		return date.getTime();
	}
	// 事件:完成赠品设置
	$("#giftFinishBt").click(function() {
		$("#giftctrl_0").show();
		$("#giftctrl_1").hide();
		$("#zssp :checkbox").hide();
		$("#giftPage").hide();
		$("[id^='giftAmountW_']").each(function(i, el) {
			var id = ($(this).attr("id").split("_"))[1];
			$("#giftAmountR_" + id).html($(this).val());
		});
		$("[id^='giftAmountR_']").show();
		$("[id^='giftAmountW_']").hide();
		$("#zssp :checkbox:not(:checked)").parents("tr").remove();// 移除未勾选的
		// 赠送商品种数,并验证检查（即要关掉可能已经打开着的错误信息）
		var count = $("#zssp :checkbox:checked").length;
		$("#giftAmount").val(count).blur();
		$("#giftRemain").html(giftMax - count);
		// 对赠送品相关表单进行重命名
		$("[id^='giftCh_']").each(function(i, el) {
			var storeGoodsId = ($(this).attr("id").split("_"))[1];
			$(this).attr("name", "gifts[" + i + "].id.storeGoodsId");// id
			$("#giftAmountW_" + storeGoodsId).attr("name", "gifts[" + i + "].amount");// 赠送量
		});
	});
	// 事件:开始设置赠品
	$("#giftEditBt").click(function() {
		$("#giftctrl_0").hide();
		$("#giftctrl_1").show();
		$("#zssp :checkbox").show();
		$("#giftPage").show();
		$("[id^='giftAmountR_']").hide();
		$("[id^='giftAmountW_']").show();
	});

	// 使赠送品设置默认为完成状态
	$("#giftFinishBt").click();
	// 显示还可添加赠送品数
	$("#giftRemain").html(giftMax - $("#giftAmount").val());

	// 事件:赠送商品查找
	$("#giftSearchBt").click(function() {
		searchGift(1);
	});
	// 事件:赠送商品查找结果翻页->上一页
	$(".prv").click(function() {
		var pageInfo = $("#page").data("pageInfo");
		searchGift(pageInfo.nowPage - 1)
	});
	// 事件:赠送商品查找结果翻页->下一页
	$(".next").click(function() {
		var pageInfo = $("#page").data("pageInfo");
		searchGift(pageInfo.nowPage + 1);
	});
	// 赠送商品查找
	function searchGift(nowPage) {
		var pageSize = 	giftMax - $("#zssp :checkbox:checked").length;  // 因最多可送giftMax种商品
		if (pageSize <= 0) {
			$("#giftSearchBt").showMsg("可送商品已达上限", 'error');
			return;
		}
		if(!$("#giftSearchBt").showMsg("正在查找...", 'load', true)) return;
		$("#zssp :checkbox:not(:checked)").parents("tr").remove();// 移除未勾选的
		$.post(g_shopDomain + "/storeGoods/list/json", 
		{
			searchWord: $("#giftSearchWord").val(),
			nowPage: nowPage,
			pageSize: pageSize
		}, 
		function(data) {
			if (data.status !== 0) {
				$("#giftSearchBt").showMsg(data.message, 'error');
				return;
			}
			$("#giftSearchMsg").hide();
			var pageInfo = data.pageInfo;
			$("#totalPage").html(pageInfo.totalPage);
			$("#totalResult").html(pageInfo.totalResult);
			$("#nowPage").html(pageInfo.nowPage);
			$("#page").data("pageInfo", pageInfo);
			if (data.pageInfo.totalResult === 0) {
				$("#giftSearchBt").showMsg("没找到商品", 'error');
				return;
			}
			$("#giftSearchBt").showMsg();
			var list = data.result;
			var $list = $("#zssp");
			var noAppend = true;
			for (var i = 0; i< list.length; i++) {
				var g = list[i];// storeGoods
				// 已经在列表中的就不必再追加显示,避免勾选重复
				if ($("#giftCh_" + g.storeGoodsId).size() > 0) {
					continue;
				}
				noAppend = false;
				var unit = g.sellUnit?g.sellUnit:g.unit;
				var itemHtml = '' +
				  '<tr>' +
				  '  <td class="ch"><input type="checkbox" id="giftCh_' + g.storeGoodsId + '" value="' + g.storeGoodsId + '">&nbsp;</td>' +
				  '  <td class="sp">' +
				  '  	<a href="javascript:;"><img src="' + g_resDomain + '/images/goods_def.jpg" data="' + g.pic + '">' +
				  '  	<span>' + g.barCode + '<br>' + g.name + '</span></a></td>' +
				  '  <td width="100">库存：' + g.stockConvert + unit + '</td>' +
				  '  <td width="100">送：<span id="giftAmountR_' + g.storeGoodsId + '" style="display:none;">' + g.sellDef + '</span>' +
				  '		<input id="giftAmountW_' + g.storeGoodsId + '" type="text" value="' + g.sellDef + '" class="k" data-rule="required;amount">' +
				  '		<span>' + unit + '</span> <span for="giftAmountW_' + g.storeGoodsId + '" class="msg-box"></span></td>' +
				  '</tr>';
				  $list.append(itemHtml);
			}
			// 当前页的查找结果都已经在已选列表中(会出现分页没有记录的现象),则自动加载下一页
			if (noAppend) {
				searchGift(pageInfo.nowPage + 1);
				return;
			}
			// 使暴露在窗体的图片显示
			$(window).scroll();
		});
	}
});
